package br.com.jvet.persistencia;

import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.ejb.Stateless;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Root;

import br.com.jvet.constante.StatusAgendamento;
import br.com.jvet.entidade.MarcacaoExame;
@Stateless
public class MarcacaoExameDAO extends AbstractDAO<MarcacaoExame, Integer> {

	public MarcacaoExameDAO() {
		super(MarcacaoExame.class);
	}
	
	public List<MarcacaoExame> buscar(Map<String, Object> parameters) {

		CriteriaBuilder cb = super.getEntityManager().getCriteriaBuilder();
		CriteriaQuery<MarcacaoExame> cq = cb.createQuery(MarcacaoExame.class);

		Root<MarcacaoExame> root = cq.from(MarcacaoExame.class);
		cq.select(root);

		if (parameters.containsKey("status")) {
			Path<StatusAgendamento> name = root.get("agendamento.statusAgendamento");
			cq.where(cb.and(cb.equal(name, parameters.get("status"))));
		}

		if (parameters.containsKey("datamarcada")) {
			Path<Date> data = root.get("agendamento.dataMarcada");
			cq.where(cb.and(cb.equal(data, (Date) parameters.get("datamarcada"))));
		}
		TypedQuery<MarcacaoExame> query = super.getEntityManager().createQuery(cq);

		return query.getResultList();

	}

}
